package com.csw.android.ffmpegtest.ui.main

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.chad.library.adapter.base.entity.node.BaseNode
import com.csw.android.ffmpegtest.entity.MainSectionItem
import com.csw.android.ffmpegtest.entity.MainSectionSecondItem
import com.csw.android.ffmpegtest.ui.section1.Section101
import com.csw.android.ffmpegtest.ui.section1.Section102
import com.csw.android.ffmpegtest.ui.section1.Section103
import com.csw.android.ffmpegtest.ui.section2.Section201
import com.csw.android.ffmpegtest.ui.section3.Section301
import com.csw.android.ffmpegtest.ui.section4.Section401
import com.csw.android.ffmpegtest.ui.section5.Section501
import com.csw.android.ffmpegtest.ui.section5.Section502
import com.csw.android.ffmpegtest.ui.section5.Section503
import com.csw.android.ffmpegtest.ui.section6.Section601
import com.csw.android.ffmpegtest.ui.section7.Section701
import com.csw.android.ffmpegtest.ui.section8.Section801
import com.csw.android.ffmpegtest.ui.section8.Section802
import com.csw.android.ffmpegtest.ui.section9.Section901
import com.csw.android.ffmpegtest.ui.section9.Section902
import com.csw.android.ffmpegtest.ui.section9.Section903

class MainViewModel : ViewModel() {

    var list: MutableLiveData<MutableList<BaseNode>?> = MutableLiveData()

    init {
        val sectionList = mutableListOf(
            MainSectionItem(
                "在 Android 平台绘制一张图片，使用至少 3 种不同的 API，ImageView，SurfaceView，自定义 View",
                mutableListOf(
                    MainSectionSecondItem(
                        Section101::class.java,
                        "使用ImageView渲染一张图片"
                    ),
                    MainSectionSecondItem(
                        Section102::class.java,
                        "使用自定义View渲染一张图片"
                    ),
                    MainSectionSecondItem(
                        Section103::class.java,
                        "使用SurfaceView渲染一张图片"
                    ),
                )
            ),
            MainSectionItem(
                "在 Android 平台使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放，并实现读写音频 wav 文件",
                mutableListOf(
                    MainSectionSecondItem(
                        Section201::class.java,
                        ""
                    ),
                )
            ),
            MainSectionItem(
                "在 Android 平台使用 Camera API 进行视频的采集，分别使用 SurfaceView、TextureView 来预览 Camera 数据，取到 NV21 的数据回调",
                mutableListOf(
                    MainSectionSecondItem(
                        Section301::class.java,
                        ""
                    )
                )
            ),
            MainSectionItem(
                "学习 Android 平台的 MediaExtractor 和 MediaMuxer API，知道如何解析和封装 mp4 文件",
                mutableListOf(
                    MainSectionSecondItem(
                        Section401::class.java,
                        ""
                    )
                )
            ),
            MainSectionItem(
                "学习 Android 平台 OpenGL ES API，了解 OpenGL 开发的基本流程，使用 OpenGL 绘制一个三角形",
                mutableListOf(
                    MainSectionSecondItem(
                        Section501::class.java,
                        "通过C++给GLSurfaceView设置刷屏颜色"
                    ),
                    MainSectionSecondItem(
                        Section502::class.java,
                        "网上demo"
                    ),
                    MainSectionSecondItem(
                        Section503::class.java,
                        "绘制一个三角形"
                    )
                )
            ),
            MainSectionItem(
                "学习 Android 平台 OpenGL ES API，学习纹理绘制，能够使用 OpenGL 显示一张图片",
                mutableListOf(
                    MainSectionSecondItem(
                        Section601::class.java,
                        ""
                    ),

                    )
            ),
            MainSectionItem(
                "学习 MediaCodec API，完成音频 AAC 硬编、硬解",
                mutableListOf(
                    MainSectionSecondItem(
                        Section701::class.java,
                        ""
                    ),
                )
            ),
            MainSectionItem(
                "学习 Android 图形图像架构，能够使用 GLSurfaceviw 绘制 Camera 预览画面",
                mutableListOf(
                    MainSectionSecondItem(
                        Section801::class.java,
                        "学习 Android 图形图像架构，能够使用 GLSurfaceviw 绘制 Camera 预览画面"
                    ),
                    MainSectionSecondItem(
                        Section802::class.java,
                        "通过opengl渲染yuv420p图象"
                    ),
                )
            ),
            MainSectionItem(
                "Section901",
                mutableListOf(
                    MainSectionSecondItem(
                        Section901::class.java,
                        "打印ffmpeg支持的编解码格式"
                    ),
                    MainSectionSecondItem(
                        Section902::class.java,
                        "解封装mp4 解码h264 渲染到gl"
                    ),
                    MainSectionSecondItem(
                        Section903::class.java,
                        "FFmpeg 视频播放器"
                    ),
                )
            ),
        )
        list.postValue(sectionList as MutableList<BaseNode>)
    }

}